Referring to FIG. 1, a diagram of a network device, in accordance with the conventional art, is shown. As depicted in FIG. 1, the network device 110 (e.g. computer, workstation, server, or the like) comprises one or more interface modules 120, one or more protocol stacks 130, and one or more applications 140. The interface module 120 provides for receipt of data packets 150 transmitted on a communication channel 160. The protocol stack 130 provides for processing of the data packets 150 destined for the application 140. The application 140 (e.g., database systems, text editors, games, and the like) provides users with various functions.
Each data packet 150 is comprised of a header 170 and a payload 180. The interface module 120 acquires each data packet 150 and stores it in a buffer. The interface module 120 generates an interrupt upon acquiring a data packet 150. An operating system of the network device 110 catches the interrupt and spins off a thread of execution to handle the interrupt. The thread of execution provides for execution of the protocol stack 130. The interrupt therefore causes the protocol stack 130 to receive the data packet and provide for routing and flow control. The thread of execution then delivers the payload 180 of the data packet 150 to the destination application 140 in accordance with the processing of the header 170.
The protocol stack 130 provides a network communication protocol, such as the transmission control protocol/internet protocol (TCP/IP) suite, or the like. Such network communication protocols typically provide a flow control layer. The flow control layer keeps track of data packets to assure reliable delivery to an intended destination application. It includes explicit and acknowledged connection initiation and termination, reliable in-order unduplicated delivery of data, and out of band indication of urgent data. The network communication protocol also typically provides an addressing and routing layer. The addressing and routing layer includes host-to-host addressing and routing of data packets, data packet fragmentation, and re-assembly. The network communication protocol also typically provides a network layer. The network layer provides access to and transmission of data across the communication channel 160.
The one or more applications and each instance of the protocol stack may be provided for by a plurality of processors. Each processor may be utilized to provide for receipt of any given packet. However, data locality of information and instructions utilized for receive processing is not maintained when any given packet may be processed by any given processor. As a result, a high degree of cache trashing occurs. Alternatively, the receive processing may be provided for by a given processor. However, dedicated processing of data packets by a given processor may cause one processor to suffer from a high degree of utilization, while other processors are idle.
Thus, there is a continued need for a network communication method providing for efficient processor utilization and reduced cache trashing in a multi-processor network device. The method should also be capable of providing for increased network throughput.